
[dbo].[asi_FixDuplicateIndividualRowsById]
CREATE PROCEDURE [dbo].[asi_FixDuplicateIndividualRowsById]
@id varchar(10)
AS
BEGIN
BEGIN TRANSACTION
DECLARE @cleanupTable TABLE (ContactKey uniqueidentifier)
DECLARE @udpateTable TABLE (ContactKey uniqueidentifier)
INSERT INTO @cleanupTable
SELECT a.ContactKey FROM ContactMain a INNER JOIN ContactMain b ON a.SyncContactID = b.SyncContactID
WHERE a.ContactKey != b.ContactKey AND a.IsInstitute = 0 AND b.IsInstitute = 0 AND a.SyncContactID != b.ID
AND (a.SyncContactID = @id OR a.ID = @id)
INSERT INTO @udpateTable
SELECT a.ContactKey FROM ContactMain a INNER JOIN ContactMain b ON a.SyncContactID = b.SyncContactID
WHERE a.ContactKey != b.ContactKey AND a.IsInstitute = 0 AND b.IsInstitute = 0 AND a.ID != b.SyncContactID
AND (a.SyncContactID = @id OR a.ID = @id)
IF EXISTS (SELECT 1 FROM @cleanupTable)
BEGIN
UPDATE a
SET ContactStatusCode = d.ContactStatusCode,
UpdatedByUserKey = c.UserKey,
UpdatedOn = GETDATE(),
SyncContactID = NULL,
ID = NULL
FROM ContactMain a INNER JOIN @cleanupTable b ON a.ContactKey = b.ContactKey
INNER JOIN UserMain c ON c.UserId = 'MANAGER'
INNER JOIN ContactStatusRef d ON d.ContactStatusDesc = 'Delete' AND d.IsSystem = 1
END
IF EXISTS (SELECT 1 FROM @udpateTable)
BEGIN
UPDATE a
SET a.ID = a.SyncContactID
FROM ContactMain a INNER JOIN @udpateTable b ON a.ContactKey = b.ContactKey
END
COMMIT TRANSACTION
END
GO